package com.ctshk.rpc.system.service;

import java.util.List;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.system.dto.QuerySupplierAndAgentDTO;
import com.ctshk.rpc.system.dto.QuerySupplierByNameDTO;
import com.ctshk.rpc.system.dto.SearchSupplierDTO;
import com.ctshk.rpc.system.dto.SysSupplierDTO;
import com.ctshk.rpc.system.dto.SysSupplierQueryListDTO;
import com.ctshk.rpc.system.req.SearchSupplierReq;
import com.ctshk.rpc.system.req.SysAddSupplierReq;
import com.ctshk.rpc.system.req.SysSupplierApprovalReq;
import com.ctshk.rpc.system.req.SysSupplierQueryListReq;
import com.ctshk.rpc.system.req.SysSupplierUpdateStatusReq;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 * 供应商 服务类
 * </p>
 *
 * @author 张志朋
 * @since 2021-02-05
 */
public interface ISysSupplierService  {

	/**
	 * 測試方法
	 * @return
	 */
    Result addBatchSupplierTest();

    /**
     * 新增供应商
     *
     * @param sysAddSupplierReq 新增供应商入参
     * @param id 当前登录人id
     * @param addType 1仅保存,2走审批流程
     * @return
     */
    Result addSysSupplier(SysAddSupplierReq sysAddSupplierReq, Long id, int addType);

    /**
     * 查询供应商详情
     *
     * @param id 供应商id
     * @return
     */
    Result<SysSupplierDTO> query(Long id);

    /**
     * 编辑供应商
     *
     * @param sysAddSupplierReq 供应商入参
     * @param id 当前登录人id
     * @param addType 1仅保存,2走审批流程
     * @return
     */
    Result editSupplier(SysAddSupplierReq sysAddSupplierReq, Long id, int addType);

    /**
     * 查询供应商详情
     *
     * @param req 入参
     * @param tokenUser 登录用户
     * @return
     */
    PageResponse<SysSupplierQueryListDTO> queryList(SysSupplierQueryListReq req, TokenUser tokenUser);

	/**通过名称查询供应商和代理商
	 * @param name 供应商或代理商名称
	 * @return
	 */
    Result<List<QuerySupplierAndAgentDTO>> querySupplierAndAgent(String name);

	/**通过名称查询供应商
	 * @param name 供应商名称
	 * @param costItemId 供应商成本项id
	 * @return
	 */
	Result<List<QuerySupplierByNameDTO>> querySupplierByName(String name, String costItemId);

	/**搜索供应商（审核通过的）
	 * @param req
	 * @return
	 */
	Result<PageResponse<SearchSupplierDTO>> searchByName(SearchSupplierReq req);

	/**搜索供应商（All）
	 * @param req
	 * @return
	 */
	Result<PageResponse<SearchSupplierDTO>> searchByNameAll(SearchSupplierReq req);

	/**供应商审核
	 * @param req
	 * @return
	 */
	Result approval(SysSupplierApprovalReq req);

	/**修改供应商状态
	 * @param req
	 * @return
	 */
	Result updateStatus(SysSupplierUpdateStatusReq req);

	/**删除供应商
	 * @param id
	 * @return
	 */
	Result deleteById(Long id);


	/**
	 * 供应商拉选列表查询(成本项ID)
	 * @param itemId
	 * @return
	 */
	Result<List<SysSupplierQueryListDTO>> queryListByItemId(Long itemId);
}
